package com.vincent.springbucks.entity;

import lombok.*;

import javax.persistence.*;
import java.io.Serializable;
import java.util.List;

/**
 * 咖啡订单
 * @author vincent
 * @date 2019/5/12
 * @description
 */
@Entity
@Table(name = "T_ORDER")
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString(callSuper = true)
@Builder
public class CoffeeOrder extends BaseEntity implements Serializable {
    /**
     * 顾客名称，后续会修改为用户id
     */
    private String customer;
    /**
     * 订单内容，即咖啡，这里使用多对多映射，此时jpa会自动创建主外键关联
     * JoinTable会产生一张中间表进行关联，不指定关联的列时自动使用两张表的主键进行关联
     * OrderBy指定排序规则
     */
    @ManyToMany
    @JoinTable(name = "T_ORDER_COFFEE")
    @OrderBy("id")
    private List<Coffee> items;
    /**
     * 订单状态，存在数据库时会自动映射成int类型，注意列要设置成非空，否者手动插入数据会导致转换失败
     */
    @Enumerated
    @Column(nullable = false)
    private OrderState state;
}
